home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d3 / re.arc / REPROF.DOC < prev    next >
Text File  |  1990-01-16  |  82KB  |  1,887 lines

  1.                                 
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.  
  13.  
  14.  
  15.  
  16.  
  17.  
  18.  
  19.  
  20.  
  21.               RAVITZ EDITOR 1.00 PROFILE REFERENCE
  22.  
  23.               (C) Copyright 1989 Cary Ravitz
  24.  
  25.  
  26.               Cary Ravitz
  27.               P. O. Box 25068
  28.               Lexington, KY  40524-5068
  29.                                          
  30.  
  31.                                         p-1
  32.      CONTENTS
  33.  
  34.        RE PROFILE ASSEMBLER PROGRAM ..................................... 2
  35.        MNEMONIC ABBREVIATIONS                          3
  36.        @ALLOWDVWIN - ALLOW DESQVIEW WINDOWING ........................... 4
  37.        @BEEP - BEEP ON ERROR MESSAGES                      4
  38.        @CMDSAVELEN, @CMDSAVENUM - COMMAND RECALL LIST QUALIFIERS ........ 4
  39.        @CSRPOSEDIT - CURSOR POSITION AFTER EDIT COMMAND              4
  40.        @CSRSPEED, @CSRSPEEDV - CURSOR SPEED ............................. 4
  41.        @DATEFORM, @TIMEFORM - DATE, TIME FORMAT                  4
  42.        @DECOASTKB - DECOAST KEYBOARD? ................................... 4
  43.        @DEFPRN - DEFAULT PRINTER                          4
  44.        @DEFSAVETP - DEFAULT SAVE TYPE ................................... 5
  45.        @DEFTABHAN - DEFAULT TAB HANDLING                      5
  46.        @DEFWRAP - DEFAULT WORD WRAP MARGINS ............................. 5
  47.        @EDCURFL - EDIT CURRENT FILE                       5
  48.        @EMKBBFPRM - EMPTY KEYBOARD BUFFER FOR PROMPT? ................... 5
  49.        @ENHANCEDKB - ENHANCED KEYBOARD HANDLING                  5
  50.        @EXCHAR, @EXCHARST - EXCLUDED LINE SYMBOLS ....................... 5
  51.        @EXFILENAME - EXPAND FILE NAMES                      6
  52.        @FILETP - FILE TYPE .............................................. 6
  53.        @FINDWORD(0..31) - FIND COMMAND WORD OPTION                  6
  54.        @GOTOMARGIN - GO TO MARGIN ....................................... 6
  55.        @HICSRFIND - HIGHLIGHT CURSOR AFTER FIND/CHANGE              6
  56.        @HORSCRNCOR, @VERSCRNCOR - HORIZONTAL, VERTICAL SCREEN CORRECTION  7
  57.        @INITRPLINS - INITIAL REPLACE / INSERT MODE                  7
  58.        @LNLEN - LINE LENGTH ............................................. 7
  59.        @MENUPOS - MENU POSITION                          7
  60.        @MOUSE* - MOUSE CONFIGURATION PARAMETERS ......................... 7
  61.        @POLLINPUT - POLL INPUT?                          8
  62.        @SCRNWAIT - COLOR SCREEN UPDATE WAITS ............................ 8
  63.        @SHOWHIDSYS - SHOW HIDDEN AND SYSTEM FILES IN DIRECTORY LIST       8
  64.        @SORTDIR - SORT DIRECTORIES ...................................... 8
  65.        @SORTSEQ(0..255) - SORTING SEQUENCE                      8
  66.        @TBNEWLN - TOP BOTTOM NEW LINE FUNCTION .......................... 8
  67.        SCREEN COLORS AND CURSOR TYPE                      9
  68.        FUNCTION KEY DEFINITION .......................................... 9
  69.        KEY ASSIGNMENT TABLE                          10
  70.        RE FUNCTIONS .................................................... 13
  71.        @SPECIALKEY AND @SPECIALKAL - SPECIAL KEYS                 23
  72.        MACROS .......................................................... 24
  73.        STARTUP MACRO                             25
  74.        VARIABLES ....................................................... 25
  75.        MANIPULATION OF MACRO FUNCTIONS                     25
  76.        HANDY MACRO SEQUENCES ........................................... 26
  77.        QUERYING MODES AND SITUATIONS                     27
  78.        WORKING WITH A SPLIT SCREEN ..................................... 27
  79.        MACRO CONTROL OF COMMANDS                         28
  80.        MACRO DEFINED SHIFT MODES ....................................... 29
  81.        MULTIFUNCTION MACROS                          29
  82.        GETKEY AND STRUCTURED USER INPUT ................................ 30
  83.        MESSAGES, MESSAGE TYPES, AND USER DEFINED MESSAGES             31
  84.        TAB SETS ........................................................ 32
  85.        HELP TEXT                                 32
  86.        MENUS ........................................................... 33
  87.        PANELS                                 34
  88.        COMPATIBILITY AND TECHNICAL INFORMATION ......................... 36
  89.                                          
  90.  
  91.                                         p-2
  92.      RE PROFILE ASSEMBLER PROGRAM
  93.  
  94.        The RE EXE file can be set up to make it more effective for specific
  95.        uses.  The  program    REPROF (file REPROF.EXE) is  used  to  generate
  96.        personalized versions of RE.
  97.  
  98.        REPROF  reads  a  profile  and creates  a  new  RE.EXE.  The calling
  99.        sequence is "REPROF (profile) (O-newexefile) (F)".  If no profile is
  100.        specified then the  default RE.EXE is created  (this  is the same as
  101.        using  REPROF.1 unmodified).  You  can specify  an output file  with
  102.        O-filename.    F says to  do a  fast  help compression instead  of the
  103.        default  compression.  The fast help compression is not as effective
  104.        as  the  normal  help  compression,    but  it is  useful  if you  are
  105.        debugging macros.
  106.  
  107.        REPROF may  be invoked  from the RE command    line using the    current
  108.        session  as    the  profile   by   using   the   command   "di  reprof
  109.        (o-newexefile) (f)".  If there are any errors the cursor will be put
  110.        on the problem line upon return to RE.
  111.  
  112.        The profile contains a  list of modifications.  First are  byte  and
  113.        word patches, macros, messages, and tab sets. The forms of the lines
  114.        are:
  115.  
  116.          B location value value ...      byte patch in the RE patch area
  117.          W location value value ...      word patch in the RE patch area
  118.          X number function function ...  first line of macro
  119.          Y function function ...         continuation of macro
  120.          M number type message         message definition
  121.          T number tabs             tab set definition.
  122.  
  123.        These are followed by the help text and menus.
  124.  
  125.        Hex numbers    are specified by  prefixing  them with $.  ASCII values
  126.        other  than    0..9, $, ^, &, @, and space may be specified  with that
  127.        character for all  values  and functions (not locations).  Mnemonics
  128.        are    provided  for all  functions  and  locations,  and most values.
  129.        Before the help text,  lines that begin with "*" and blank lines are
  130.        ignored, and  "//" means  that the  following text is a new    profile
  131.        line.  In the help text, lines with a "*" in column one are ignored,
  132.        blank lines are  part of the  help text, and  // is part of the help
  133.        text.
  134.  
  135.        The file  REPROF.1  contains  the  profile  with which  the    default
  136.        version of RE was created.  REPROF.2 contains a  few more  functions
  137.        than  the  default profile and has a shortened help text.  Use these
  138.        profiles as a starting point for creating your own profile.
  139.  
  140.        The size of RE.EXE grows or shrinks to accommodate different profile
  141.        sizes.  The total size of RE.EXE  may not exceed 65536 bytes  (64K).
  142.        (From  56K to  64K can  only be  help  text, but  this  is  rarely a
  143.        limitation.) This leaves at least 20K for your profile.
  144.                                          
  145.  
  146.                                         p-3
  147.      MNEMONIC ABBREVIATIONS
  148.  
  149.        To  keep the location and function  mnemonics short    and consistent,
  150.        this list of abbreviations is used.
  151.  
  152.        ABBREV  FULL WORD       ABBREV  FULL WORD          ABBREV  FULL WORD
  153.  
  154.        a-       alt-        for       forward          ps      position
  155.        ar       area        ins       insert          rep     repeat
  156.        bk       backward       kb       keyboard          rpl     replace
  157.        c-       ctrl-       lf       left           rt      right
  158.        cmd       command       ln       line           s-      shift-
  159.        csr       cursor       md       mode           scrn    screen
  160.        del       delete       mk       mark           ses     session
  161.        def       default       np       numeric keypad     sp      space
  162.        ent       enter       para    paragraph          tp      type
  163.        ex       exclude(d)       pg       page           txt     text
  164.                                          
  165.  
  166.                                         p-4
  167.      @ALLOWDVWIN - ALLOW DESQVIEW WINDOWING
  168.  
  169.        By default, RE looks for  DESQview and  uses  the  DESQview selected
  170.        screen  buffer.  If    you  run in DESQview only in  full screen mode,
  171.        screen updates will    be faster if you  disable this feature.  To  do
  172.        this, set the byte at @allowdvwin to ^no ("B @allowdvwin ^no").  The
  173.        default is ^yes.
  174.  
  175.      @BEEP - BEEP ON ERROR MESSAGES
  176.  
  177.        Normally RE beeps only on severe errors.  To make all error messages
  178.        cause  a  beep,  set  the  byte at @beep  to ^error.  The default is
  179.        ^critical. ^no turns off all beeps.
  180.  
  181.      @CMDSAVELEN, @CMDSAVENUM - COMMAND RECALL LIST QUALIFIERS
  182.  
  183.        The    byte at @cmdsavelen  specifies the minimum  length of a command
  184.        that will be added to the command recall list. The maximum number of
  185.        commands on the list is specified by the byte at @cmdsavenum.
  186.  
  187.      @CSRPOSEDIT - CURSOR POSITION AFTER EDIT COMMAND
  188.  
  189.        After a successful Edit command  you  can  have the cursor placed on
  190.        the command line (default) or in  the  text    area.  Set the byte  at
  191.        @csrposedit to ^cmdln or ^txtar to control this.
  192.  
  193.      @CSRSPEED, @CSRSPEEDV - CURSOR SPEED
  194.  
  195.        By default the horizontal cursor speed is tripled in typematic mode.
  196.        This is set with B @csrspeed 2. You can slow it to double speed with
  197.        1 and normal speed with 0. Higher numbers also allowed.
  198.  
  199.        @csrspeedv works  like @csrspeed except that it affects the vertical
  200.        cursor speed. 0 is the default.
  201.  
  202.      @DATEFORM, @TIMEFORM - DATE, TIME FORMAT
  203.  
  204.        The word  at  @dateform  sets  the  date format.  This  defaults  to
  205.        ^MM-DD-YY and  can  also be set to ^YY-MM-DD  and  ^YYYY-MM-DD.  The
  206.        alternate formats are directly sortable.
  207.  
  208.        The byte at @timeform sets the time    format.  The default is ^12hour
  209.        and ^24hour    is the    only alternative.  ^24hour format  is  directly
  210.        sortable.
  211.  
  212.      @DECOASTKB - DECOAST KEYBOARD?
  213.  
  214.        Keyboard decoasting    can  be  turned  off  by  changing the    byte at
  215.        @decoastkb to ^no. The default is ^yes.
  216.  
  217.      @DEFPRN - DEFAULT PRINTER
  218.  
  219.        The    default printer  is specified by a  Turbo Pascal  string with a
  220.        maximum length of  8.  There should be  no  trailing  blanks  in the
  221.        string.  The length byte  is  at @defprn and the file or device name
  222.        begins  immediately    after this.  The default is  PRN.  To  set  the
  223.        default printer to LPT2 use "B @defprn 4 l p t ^2".
  224.                                          
  225.  
  226.                                         p-5
  227.      @DEFSAVETP - DEFAULT SAVE TYPE
  228.  
  229.        The byte at @defsavetp sets the default save type.  This is normally
  230.        ^backup, but may be set to ^direct  or ^indirect.  The save type may
  231.        also be set explicitly in each Save command.
  232.  
  233.      @DEFTABHAN - DEFAULT TAB HANDLING
  234.  
  235.        By  default    tabs  are  expanded  on  input    but  there  is    no  tab
  236.        compression on output. This is controlled by the byte at @deftabhan.
  237.        It can  be set to ^tabed(2..63) for    tab expansion  during  the edit
  238.        command,  ^tabedsv(2..63)  for  tab    expansion  during  edit and tab
  239.        compression during save, or    taboff(2..63) for  no tab  expansion or
  240.        compression.  The numeric parameter to these functions is the number
  241.        of columns separating tab columns. It is needed even if you turn tab
  242.        handling off because tab handling can be overridden by edit and save
  243.        options. The default is ^tabed(8).
  244.  
  245.      @DEFWRAP - DEFAULT WORD WRAP MARGINS
  246.  
  247.        The    initial left and right word wrap margins are one byte values at
  248.        @defwrap. These are initially 1 and 255.  The right word wrap margin
  249.        may be individually accessed with @defwraprt.
  250.  
  251.      @EDCURFL - EDIT CURRENT FILE
  252.  
  253.        To cause  the Edit command to default to the C option, which says to
  254.        look for a  current file before getting it from the disk, change the
  255.        byte at @edcurfl from ^no to  ^yes.    This option is more accurate if
  256.        you also set @exfilename to ^yes.
  257.  
  258.      @EMKBBFPRM - EMPTY KEYBOARD BUFFER FOR PROMPT?
  259.  
  260.        To  prevent RE from emptying the keyboard  buffer for "Are  you sure
  261.        (Y/N)?" and "Replace file (Y/N)?" change the byte at @emkbbfprm from
  262.        ^yes to ^no.
  263.  
  264.      @ENHANCEDKB - ENHANCED KEYBOARD HANDLING
  265.  
  266.        By default RE does not look for the enhanced keyboard. If you assign
  267.        functions to keys on the enhanced keyboard (see below), you need  to
  268.        set the byte at @enhancedkb to ^auto to enable these keys.  With the
  269.        enhanced keyboard enabled RE  will still handle  regular  keyboards.
  270.        The default is ^off.
  271.  
  272.        The    reason for not looking for the enhanced keyboard by default  is
  273.        that some resident programs    cause  RE to  think  that the  enhanced
  274.        keyboard is there when it is not.  Outside of such problems, you can
  275.        run on any PC with the enhanced keyboard enabled.
  276.  
  277.      @EXCHAR, @EXCHARST - EXCLUDED LINE SYMBOLS
  278.  
  279.        The two characters used to show excluded lines and the start of each
  280.        line in an excluded group are bytes at @exchar  and @excharst.  They
  281.        are defaulted to - and +.
  282.                                          
  283.  
  284.                                         p-6
  285.      @EXFILENAME - EXPAND FILE NAMES
  286.  
  287.        The byte at @exfilename is  normally ^no, which says  to leave  file
  288.        names as entered. If you change this to ^yes then file names entered
  289.        with  the Edit and  Name commands will be expanded to include a disk
  290.        and path, and any trailing dot is removed.
  291.  
  292.      @FILETP - FILE TYPE
  293.  
  294.        By default RE reads and writes  old style ASCII files (CR/LF (13,10)
  295.        at the end  of every  line and EOF (26) at the end of the file).  If
  296.        you set  the  byte at @filetp to ^new, RE reads and writes new style
  297.        ASCII files    (CR/LF    at the end of every line except the last and no
  298.        EOF).  The default  is ^old.  The advantage of old  style  files  is
  299.        compatibility with other programs.  The advantage of new style files
  300.        is that ASCII 26 may be used as a character within the file    and the
  301.        trailing  CR/LF/EOF sequence of old style files does not get  in the
  302.        way on printer control files.
  303.  
  304.        If you set RE  up to use new  style files, it can still read an  old
  305.        style file but its final line will be an ASCII 26. If you leave that
  306.        line and save the file, it will still be a good old style file.
  307.  
  308.        If RE is set up for old  style files, it can read new style files in
  309.        general, but it will stop reading at the first ASCII 26, and it will
  310.        save the file as an old style file.
  311.  
  312.      @FINDWORD(0..31) - FIND COMMAND WORD OPTION
  313.  
  314.        The characters  that  are considered to be  part of    a word by the W
  315.        (word)  option of the F (find) command, the    uppercase  first letter
  316.        function,  and the ^ifcharinword and ^ifcharnotinword  functions are
  317.        specified by a Turbo Pascal set constant. The set is specified by 32
  318.        bytes at @findword(0..31).  Each character is represented by one bit
  319.        in the set.    Bits that are 1 represent characters that are part of a
  320.        word. Bits that are 0 are word separators.  The default set is #, $,
  321.        %, 0..9, @, A..Z, a..z.  The address of  a bit as  a function of the
  322.        ASCII code that it controls is:
  323.  
  324.          the byte address is @findword(ASCII shr 3)
  325.          the bit within that byte is ASCII and 7.
  326.  
  327.      @GOTOMARGIN - GO TO MARGIN
  328.  
  329.        When RE goes to a  specific line with the go to function, or a Find,
  330.        Change, or line number command, it puts the line  one line down from
  331.        the    first line in the text area.  This can be changed to any number
  332.        from 0 to 40. To do this, set the byte at @gotomargin to the desired
  333.        margin.  The default is 1.  RE dynamically limits  the actual  value
  334.        used to half the text area height, so 40 may be a useful value.
  335.  
  336.      @HICSRFIND - HIGHLIGHT CURSOR AFTER FIND/CHANGE
  337.  
  338.        To cause the  cursor to  be highlighted after a  successful    find or
  339.        change, set the byte at @hicsrfind to  1..126 to set  the  number of
  340.        blinks or ^yes for indefinite blinking. The default is 2.
  341.                                          
  342.  
  343.                                         p-7
  344.      @HORSCRNCOR, @VERSCRNCOR - HORIZONTAL, VERTICAL SCREEN CORRECTION
  345.  
  346.        When  RE does an  automatic horizontal screen  scroll,  it puts  the
  347.        cursor ten spaces into the  screen.    This correction is specified in
  348.        the byte at @horscrncor and may be from 0 to 39. The default is 10.
  349.  
  350.        When RE does  an automatic vertical    screen    scroll during  vertical
  351.        cursor movement, it puts the cursor on the edge of the screen.  This
  352.        correction is specified in the byte at @verscrncor and may be from 0
  353.        to 40. The default is 0. RE dynamically limits the actual value used
  354.        to half the text area height, so you might find 40 a useful value.
  355.  
  356.      @INITRPLINS - INITIAL REPLACE / INSERT MODE
  357.  
  358.        To set  the initial replace / insert mode to insert, change the byte
  359.        at @initrplins to ^ins. The default is ^rpl.
  360.  
  361.      @LNLEN - LINE LENGTH
  362.  
  363.        The byte  at @lnlen    specifies the maximum line  length  for RE.  It
  364.        defaults to the maximum of  255 and may be  as low as the  number of
  365.        columns on your screen.  If it is less than this then RE will refuse
  366.        to start.
  367.  
  368.      @MENUPOS - MENU POSITION
  369.  
  370.        By default (B @menupos  ^auto) menus pop up    at the top or bottom of
  371.        the    screen to avoid  covering the  cursor.    If  you prefer    them to
  372.        always pop up at the bottom, set B @menupos ^bottom.
  373.  
  374.      @MOUSE* - MOUSE CONFIGURATION PARAMETERS
  375.  
  376.        You can configure RE's mouse handling with these patches:
  377.  
  378.        B @mouse     ^yes / ^no       use mouse?          default ^yes
  379.        B @mousereset ^hard / ^soft       mouse reset type      default ^hard
  380.        B @mousehsen  1..255        mouse ticks/column      default 12
  381.        B @mousevsen  1..255        mouse ticks/line      default 16
  382.  
  383.        The @mousereset patch lets you use a software mouse reset.  This may
  384.        be useful  on  computers  that have very  slow hardware mouse resets
  385.        (some IBM PS/2s).  If you  notice a    two second delay  on startup or
  386.        after a DOS shell, try B @mousereset ^soft.
  387.  
  388.        You can also assign functions to the mouse buttons and movement. See
  389.        KEY ASSIGNMENT TABLE.
  390.                                          
  391.  
  392.                                         p-8
  393.      @POLLINPUT - POLL INPUT?
  394.  
  395.        Normally  RE  polls    the  keyboard  input,  calling    the  BIOS  "key
  396.        pressed?"  function.  This  is  needed for the  caps lock indicator,
  397.        cursor highlighting, mouse  handling,  and automatic  keyboard state
  398.        panels. However it uses up battery power on some laptop computers by
  399.        preventing shut  down  and it  prevents  efficient  multitasking  in
  400.        DESQview.  Set the byte at @pollinput to ^no to  turn off polling  -
  401.        this will also shut off the caps lock indicator.  Set it  to ^yes to
  402.        always do polling.  Set it to ^auto    to turn  off polling only  when
  403.        running under DESQview or on a PC Convertible. It is normally ^yes.
  404.  
  405.        Regardless  of how  you set @pollinput  polling will be turned on if
  406.        you use  automatic  panels  or  a mouse.  Also polling is always  in
  407.        effect while the cursor is highlighted, while RE is doing background
  408.        data defragmentation, and for a half second after each keystroke.
  409.  
  410.      @SCRNWAIT - COLOR SCREEN UPDATE WAITS
  411.  
  412.        On  a color    graphics adaptor  RE  waits for retraces to update  the
  413.        screen  to prevent "snow".  Some CGAs do  not  need these waits.  RE
  414.        normally does  not do screen update waits on PCjrs, PC Convertibles,
  415.        PS/2 Model 30s and 80s, EGAs,  VGAs,  MDAs,    any display mode  other
  416.        than 2 or 3, and any mode with  other than  80 columns.  The byte at
  417.        @scrnwait  can  be  set to  ^auto (the  default) to let RE  make the
  418.        decision, ^yes to force waits, or ^no to disable waits.
  419.  
  420.      @SHOWHIDSYS - SHOW HIDDEN AND SYSTEM FILES IN DIRECTORY LIST
  421.  
  422.        Normally  directory    lists  ignore  hidden and  system  file.  Set B
  423.        @showhidsys ^yes to include these files. The default is ^no.
  424.  
  425.      @SORTDIR - SORT DIRECTORIES
  426.  
  427.        Normally RE sorts directory lists. This can be disabled by setting B
  428.        @sortdir ^no. Subdirectories will still be separated from files, but
  429.        otherwise  they will be in the same order as with a DOS DIR command.
  430.        The default is ^yes.
  431.  
  432.      @SORTSEQ(0..255) - SORTING SEQUENCE
  433.  
  434.        The default    collating sequence for the Order command (without the C
  435.        option) is contained in an array of bytes from 0 to 255.  This array
  436.        does not contain a sequence of ASCII codes  but instead contains the
  437.        sort value for each    ASCII code.  This  lets you define  a number of
  438.        characters  to have the same  sort value.  The address  of the  sort
  439.        value for ASCII code i is @sortseq(i).
  440.  
  441.      @TBNEWLN - TOP BOTTOM NEW LINE FUNCTION
  442.  
  443.        When  you type a character  on the  Top ---    or Bottom --- line,  RE
  444.        inserts a new line, puts the cursor on it, and enters the character.
  445.        This  line can be  added  with  one of four    functions: ^newln(1)  -
  446.        cursor column is unchanged; ^newlnalign(1) - cursor is put under the
  447.        first nonblank of the previous line; ^newlncol1(1) -  cursor goes to
  448.        column 1; or ^newlnww(1)  - cursor  goes  to left word  wrap column.
  449.        This is set with W @tbnewln function. The default ^newln(1).
  450.                                          
  451.  
  452.                                         p-9
  453.      SCREEN COLORS AND CURSOR TYPE
  454.  
  455.        There are four sets    of screen color attributes,  each with eighteen
  456.        attributes,    listed    below.    RE  reads the  current display    mode on
  457.        startup  and  after a DOS shell and chooses: the mono attributes for
  458.        mode 7; color attributes  for modes 1 and  3; lcd attributes for any
  459.        other mode on  a  PC  Convertible; and  b/w attributes  for anything
  460.        else. There are no mnemonics for the attribute values.
  461.  
  462.        There is also a  cursor type  byte patch  for  each display    mode  -
  463.        @clrcsrtp,  @b/wcsrtp, @moncsrtp,  and  @lcdcsrtp.  Normally the  PC
  464.        blinking cursor is turned off and moved off the screen - this is set
  465.        with ^noblink (the  default).  If  it is  desirable to have    the  PC
  466.        cursor track the  noblink cursor, use  ^noblink/bios.  The PC cursor
  467.        will still  be turned  off but it will move with the noblink cursor.
  468.        This  may  cause  problems with some resident programs that turn the
  469.        cursor on but do not turn it off when finished. Use ^bios to disable
  470.        the noblink cursor and enable the PC cursor.
  471.  
  472.        ATTRIBUTE         COLOR         B/W     MONO         LCD
  473.                  PATCH         PATCH     PATCH         PATCH
  474.                  LOCATION    LOCATION     LOCATION    LOCATION
  475.  
  476.        text          @clrtxt     @b/wtxt     @montxt     @lcdtxt
  477.        excluded line     @clrextxt   @b/wextxt     @monextxt   @lcdextxt
  478.        area marked text     @clrarmk    @b/warmk     @monarmk    @lcdarmk
  479.        area marked excl     @clrarmkex  @b/warmkex  @monarmkex  @lcdarmkex
  480.        position mark     @clrpsmk    @b/wpsmk     @monpsmk    @lcdpsmk
  481.        insert cursor     @clrinscsr  @b/winscsr  @moninscsr  @lcdinscsr
  482.        replace cursor     @clrrplcsr  @b/wrplcsr  @monrplcsr  @lcdrplcsr
  483.        error message     @clrerrmsg  @b/werrmsg  @monerrmsg  @lcderrmsg
  484.        status line         @clrstln    @b/wstln     @monstln    @lcdstln
  485.        inactive st line     @clriastln  @b/wiastln  @moniastln  @lcdiastln
  486.        command line      @clrcmdln   @b/wcmdln     @moncmdln   @lcdcmdln
  487.        top, bottom line     @clrtopbot  @b/wtopbot  @montopbot  @lcdtopbot
  488.        help title         @clrhlpttl  @b/whlpttl  @monhlpttl  @lcdhlpttl
  489.        help text         @clrhlptxt  @b/whlptxt  @monhlptxt  @lcdhlptxt
  490.        menu title         @clrmenttl  @b/wmenttl  @monmenttl  @lcdmenttl
  491.        menu text         @clrmentxt  @b/wmentxt  @monmentxt  @lcdmentxt
  492.        menu cursor         @clrmencsr  @b/wmencsr  @monmencsr  @lcdmencsr
  493.        menu text 2         @clrmentx2  @b/wmentx2  @monmentx2  @lcdmentx2
  494.  
  495.      FUNCTION KEY DEFINITION
  496.  
  497.        RE uses a translation table on  all    function keys.    You may  change
  498.        this  table to add or change  function  key    assignments.  To make a
  499.        change: find the address in the KEY ASSIGNMENT TABLE that represents
  500.        the key of interest; find the RE FUNCTION CODE  that represents  the
  501.        function of interest; and assign the code to that address. There are
  502.        many functions that take two or  more words.  These can only be used
  503.        in macros, not in direct key assignments.
  504.  
  505.        For example, to assign  the autoscroll cursor movement  functions to
  506.        the cursor keys, use these profile lines:
  507.  
  508.          W @csrlf &csrlf  // W @csrrt &csrrt
  509.          W @csrup &csrup  // W @csrdn &csrdn
  510.                                          
  511.  
  512.                                        p-10
  513.      KEY ASSIGNMENT TABLE
  514.  
  515.        KEY             PATCH LOCATION     DEFAULT RE FUNCTION
  516.  
  517.        alt -         @a--         &scrolllfcsr
  518.        alt =         @a-=         &scrollrtcsr
  519.        alt 1         @a-1         &repcurfind
  520.        alt 2         @a-2         &repcurchange
  521.        alt 3         @a-3         &fillnum
  522.        alt 4         @a-4         &blankarrem
  523.        alt 5         @a-5         &fillblock
  524.        alt 6         @a-6         &noop
  525.        alt 7         @a-7         &csrupoutline
  526.        alt 8         @a-8         &csrdnoutline
  527.        alt 9         @a-9         &shiftlf
  528.        alt 0         @a-0         &shiftrt
  529.        alt a         @a-a         &asciicode
  530.        alt b         @a-b         &mkcor
  531.        alt c         @a-c         ©lns
  532.        alt d         @a-d         &delar
  533.        alt e         @a-e         ¯o(125)
  534.        alt f         @a-f         &flow
  535.        alt f1         @a-f1         &help
  536.        alt f2         @a-f2         &noop
  537.        .             .             .
  538.        alt f10         @a-f10         &noop
  539.        alt g         @a-g         ¯o(101)
  540.        alt h         @a-h         &hicsr(10)
  541.        alt i         @a-i         &insar
  542.        alt j         @a-j         &rtjustify
  543.        alt k         @a-k         &eraseendln
  544.        alt l         @a-l         &mkln
  545.        alt m         @a-m         &movelns
  546.        alt n         @a-n         &newlnalign(1)
  547.        alt o         @a-o         &overlayar
  548.        alt p         @a-p         &set/re/unpsmk
  549.        alt q         @a-q         &nextses
  550.        alt r         @a-r         &reshow
  551.        alt s         @a-s         &split/join
  552.        alt t         @a-t         &noop
  553.        alt u         @a-u         &unmk
  554.        alt v         @a-v         ¯o(102)
  555.        alt w         @a-w         &setdrawingmd
  556.        alt x         @a-x         &exindentrem
  557.        alt y         @a-y         &recallcmdfor
  558.        alt z         @a-z         ¯o(100)
  559.        back tab         @bktab         &tabbkcurset
  560.        backspace/ctrl h  @bksp         &bksp
  561.        ctrl \         @c-\         28
  562.        ctrl ]         @c-]         29
  563.        ctrl -         @c--         31
  564.        ctrl 2 (null)     @c-2         0
  565.        ctrl 6         @c-6         30
  566.        ctrl a         @c-a         1
  567.        ctrl b         @c-b         2
  568.        ctrl backspace    @c-bksp         &delln
  569.        ctrl c         @c-c         3
  570.                                          
  571.  
  572.                                        p-11
  573.        ctrl d         @c-d         4
  574.        ctrl e         @c-e         5
  575.        ctrl end         @c-end         &bottomoffile
  576.        ctrl ent/ctrl j   @c-ent         10
  577.        ctrl f         @c-f         6
  578.        ctrl f1         @c-f1         &noop
  579.        .             .             .
  580.        ctrl f10         @c-f10         &noop
  581.        ctrl g         @c-g         7
  582.        ctrl home         @c-home         &topoffile
  583.        ctrl k         @c-k         11
  584.        ctrl l         @c-l         12
  585.        ctrl left         @c-lf         &scrolllf(1)
  586.        ctrl n         @c-n         14
  587.        ctrl o         @c-o         15
  588.        ctrl p         @c-p         16
  589.        ctrl page down    @c-pgdn         &scrolldn(1)
  590.        ctrl page up      @c-pgup         &scrollup(1)
  591.        ctrl q         @c-q         17
  592.        ctrl r         @c-r         18
  593.        ctrl right         @c-rt         &scrollrt(1)
  594.        ctrl s         @c-s         19
  595.        ctrl t         @c-t         20
  596.        ctrl u         @c-u         21
  597.        ctrl v         @c-v         22
  598.        ctrl w         @c-w         23
  599.        ctrl x         @c-x         24
  600.        ctrl y         @c-y         25
  601.        ctrl z         @c-z         26
  602.        cursor down         @csrdn         &csrdnwrap
  603.        cursor left         @csrlf         &csrlfwrap(1)
  604.        cursor right      @csrrt         &csrrtwrap(1)
  605.        cursor up         @csrup         &csrupwrap
  606.        delete         @delete         &delchar(1)
  607.        end             @end         &csrendln
  608.        enter/ctrl m      @ent         ^macro(106)
  609.        esc/ctrl [         @esc         &csrcmd/txt
  610.        f1             @f1         ¯o(112)
  611.        f2             @f2         ¯o(113)
  612.        f3             @f3         ¯o(114)
  613.        f4             @f4         ¯o(115)
  614.        f5             @f5         ¯o(116)
  615.        f6             @f6         ¯o(117)
  616.        f7             @f7         ¯o(118)
  617.        f8             @f8         ¯o(119)
  618.        f9             @f9         ¯o(120)
  619.        f10             @f10         ¯o(121)
  620.        home          @home         &csrstartln
  621.        insert         @insert         &insrplmd
  622.        mouse down         @mousedn         &csrdn
  623.        mouse left         @mouself         &csrlf
  624.        mouse lf button   @mousebtnlf     ¯o(124)
  625.        mouse mid button  @mousebtnmd     &noop
  626.        mouse right         @mousert         &csrrt
  627.        mouse rt button   @mousebtnrt     &csrcmd/txt
  628.        mouse up         @mouseup         &csrup
  629.        page down         @pgdn         &scrolldncsr
  630.                                          
  631.  
  632.                                        p-12
  633.        page up         @pgup         &scrollupcsr
  634.        shift f1         @s-f1         &noop
  635.        .             .             .
  636.        shift f10         @s-f10         &noop
  637.        tab/ctrl i         @tab         &tabcurset
  638.        (E) alt [         @e-a-[         &noop
  639.        (E) alt ]         @e-a-]         &noop
  640.        (E) alt ;         @e-a-;         &noop
  641.        (E) alt '         @e-a-'         &noop
  642.        (E) alt `         @e-a-`         &noop
  643.        (E) alt \         @e-a-\         &noop
  644.        (E) alt ,         @e-a-,         &noop
  645.        (E) alt .         @e-a-.         &noop
  646.        (E) alt /         @e-a-/         &noop
  647.        (E) alt backsp    @e-a-bksp         &noop
  648.        (E) alt del         @e-a-del         &noop
  649.        (E) alt down      @e-a-dn         &noop
  650.        (E) alt end         @e-a-end         &noop
  651.        (E) alt enter     @e-a-ent         &noop
  652.        (E) alt esc         @e-a-esc         &noop
  653.        (E) alt f11         @e-a-f11         &noop
  654.        (E) alt f12         @e-a-f12         &noop
  655.        (E) alt home      @e-a-home         &noop
  656.        (E) alt ins         @e-a-ins         &noop
  657.        (E) alt kp *      @e-a-np-*         &noop
  658.        (E) alt kp -      @e-a-np--         &noop
  659.        (E) alt kp +      @e-a-np-+         &noop
  660.        (E) alt kp /      @e-a-np-/         &noop
  661.        (E) alt kp ent    @e-a-np-ent     &noop
  662.        (E) alt left      @e-a-lf         &noop
  663.        (E) alt pg dn     @e-a-pgdn         &noop
  664.        (E) alt pg up     @e-a-pgup         &noop
  665.        (E) alt right     @e-a-rt         &noop
  666.        (E) alt tab         @e-a-tab         &noop
  667.        (E) alt up         @e-a-up         &noop
  668.        (E) center csr    @e-cencsr         &noop
  669.        (E) ctrl del/.    @e-c-del         &noop
  670.        (E) ctrl dn/2     @e-c-dn         &noop
  671.        (E) ctrl f11      @e-c-f11         &noop
  672.        (E) ctrl f12      @e-c-f12         &noop
  673.        (E) ctrl ins/0    @e-c-ins         &noop
  674.        (E) ctrl kp -     @e-c-np--         &noop
  675.        (E) ctrl kp +     @e-c-np-+         &noop
  676.        (E) ctrl kp /     @e-c-np-/         &noop
  677.        (E) ctrl kp *     @e-c-np-*         &noop
  678.        (E) ctrl kp 5     @e-c-np-5         &noop
  679.        (E) ctrl tab      @e-c-tab         &noop
  680.        (E) ctrl up         @e-c-up         &noop
  681.        (E) f11         @e-f11         &noop
  682.        (E) f12         @e-f12         &noop
  683.        (E) shift f11     @e-s-f11         &noop
  684.        (E) shift f12     @e-s-f12         &noop
  685.  
  686.        (E) in front of  a key means  that  the key is  detected only on  an
  687.        enhanced  keyboard.    These  keys  are all  assigned    no operation by
  688.        default.  To  use  any  of the  (E) keys,  you must enable  enhanced
  689.        keyboard handling with the patch "B @enhancedkb ^auto".
  690.                                          
  691.  
  692.                                        p-13
  693.      RE FUNCTIONS
  694.  
  695.        MNEMONIC           DESCRIPTION
  696.  
  697.        ^0               0
  698.        ^1               1
  699.        ^2               2
  700.        ^3               3
  701.        ^4               4
  702.        ^5               5
  703.        ^6               6
  704.        ^7               7
  705.        ^8               8
  706.        ^9               9
  707.        ^a(0..255)           ASCII 0..255
  708.        ^amp            &
  709.        ^at               @
  710.        ^asciicode           enter ASCII code
  711.        ^bksp           backspace
  712.        ^blankar           blank area
  713.        ^blankarnsc           blank area - no on screen check
  714.        ^blankarrem           blank area - remove mark
  715.        ^blankarremnsc       blank area - remove mark - no on scrn check
  716.        ^blankln           blank current line
  717.        ^bottomoffile       to bottom of file
  718.        ^center           center
  719.        ^centerrem           center - remove mark
  720.        ^clrchgd           clear session changed flag
  721.        ^clrmodadd           clears the line mod and add status bits
  722.        ^copylns           copy line area
  723.        ^crt            ^
  724.        ^csrcmd/txt           cursor to command line/text
  725.        ^csrcmdln           cursor to command line
  726.        ^csrcolx x           cursor to column x
  727.        ^csrdn           cursor down without wrap
  728.        ^csrdn(1..78)       cursor down 1..78 lines without wrap
  729.                    (dynamically limited to 1 screen)
  730.        ^csrdnoutline       cursor down to next line that starts on or
  731.                    to the left of the cursor
  732.        ^csrdnoutlinemk       cursor down to next line that starts on or
  733.                    to the left of the cursor ignoring text
  734.                    outside of current area mark margins
  735.        ^csrdnwrap           cursor down with wrap
  736.        ^csrdnwrap(1..77)       cursor down 1..77 lines with wrap
  737.                    (cursor stops at line 1, top and bottom of
  738.                    each window)
  739.        ^csrendln           cursor to end of line
  740.        ^csrlf           cursor left 1 col without wrap
  741.        ^csrlf(0..127)       cursor left 254,1..127 cols without wrap
  742.        ^csrlfwrap           cursor left 1 col with wrap
  743.        ^csrlfwrap(0..127)       cursor left 254,1..127 cols with wrap
  744.                    (cursor stops at col 1, right side)
  745.        ^csrnextendpara       cursor to next line after paragraph
  746.        ^csrnextendparamk       crsr to next line after paragraph ignoring
  747.                    text outside of current area mark margins
  748.        ^csrnextpara        cursor to first line of next paragraph
  749.                                          
  750.  
  751.                                        p-14
  752.        ^csrnextparamk       cursor to next paragraph ignoring text
  753.                    outside of current area mark margins
  754.        ^csrprevendpara       cursor to previous line after paragraph
  755.        ^csrprevendparamk       cursor to prev line after paragraph ignoring
  756.                    text outside of current area mark margins
  757.        ^csrprevpara        cursor to first line of prev paragraph
  758.        ^csrprevparamk       cursor to previous paragraph ignoring text
  759.                    outside of current area mark margins
  760.        ^csrreturn           cursor return
  761.        ^csrrt           cursor right 1 col without wrap
  762.        ^csrrt(0..127)       cursor right 254,1..127 cols without wrap
  763.        ^csrrtwrap           cursor right 1 col with wrap
  764.        ^csrrtwrap(0..127)       cursor right 254,1..127 cols with wrap
  765.                    (cursor stops at col 1, right side)
  766.        ^csrstartln           cursor to start of line
  767.        ^csrtxt           cursor to text
  768.        ^csrup           cursor up without wrap
  769.        ^csrup(1..78)       cursor up 1..78 lines without wrap
  770.                    (dynamically limited to 1 screen)
  771.        ^csrupoutline       cursor up to next line that starts on or to
  772.                    the left of the cursor
  773.        ^csrupoutlinemk       cursor up to next line that starts on or
  774.                    to the left of the cursor ignoring text
  775.                    outside of current area mark margins
  776.        ^csrupwrap           cursor up with wrap
  777.        ^csrupwrap(1..77)       cursor up 1..77 lines with wrap
  778.                    (cursor stops at line 1, top and bottom of
  779.                    each window)
  780.        ^defrag           defragment, display free mem
  781.        ^delar           delete block/line area
  782.        ^delblock           delete block area
  783.        ^delblocknsc        delete block area - no on screen check
  784.        ^delblockrem        delete block area - remove mark
  785.        ^delblockremnsc       del blk area - remove mark - no scrn check
  786.        ^delchar(1..127)       delete 1..127 characters
  787.        ^delln           delete non-excluded line
  788.        ^dellns           delete line area
  789.        ^dispmsg(0..63)       displays message 0..63
  790.                    See MESSAGE NUMBERS for text/number list.
  791.        ^dispmsgnum(0..63)       displays message 0..63 followed by var(0)
  792.        ^dlr            $
  793.        ^endmacro           end macro
  794.                    This is automatically supplied by REPROF at
  795.                    the end of each macro, but is needed to end
  796.                    a macro from inside the macro.
  797.        ^enhancedkbauto       enable enhanced keyboard (if attached)
  798.        ^enhancedkboff       disable enhanced keyboard support
  799.        ^eraseendln           erase end of line
  800.        ^exaddnotmod        exclude added and unmodified
  801.        ^exaddnotmodrem       exclude added and unmodified - remove mark
  802.        ^exaddnotmodses       exclude added and unmodified in session
  803.        ^exall           exclude all in mark
  804.        ^exallrem           exclude all in mark - remove mark
  805.        ^exallses           exclude all in session
  806.        ^exchildren           excludes children
  807.                                          
  808.  
  809.                                        p-15
  810.        ^execcmd           execute command
  811.        ^execcmdnorecall       execute command - do not save command for
  812.                    recall
  813.        ^execfcn           executes function contained in var 0
  814.        ^exmkchildren       excludes children ignoring data outside the
  815.                    area mark margins
  816.        ^exindent           exclude by indentation
  817.        ^exindentrem        exclude by indentation - remove mark
  818.        ^exindentses        exclude by indentation entire session
  819.        ^exln           exclude one line
  820.        ^exnone           unexclude all in mark
  821.        ^exnonerem           unexclude all in mark - remove mark
  822.        ^exnoneses           unexclude all in session
  823.        ^exnotadd           exclude old lines
  824.        ^exnotaddrem        exclude old lines - remove mark
  825.        ^exnotaddses        exclude old lines in session
  826.        ^exnotmod           exclude unmodified lines
  827.        ^exnotmodadd        exclude unmodified old lines
  828.        ^exnotmodaddrem       exclude unmodified old lines - remove mark
  829.        ^exnotmodaddses       exclude unmodified old lines in session
  830.        ^exnotmodrem        exclude unmodified lines - remove mark
  831.        ^exnotmodses        exclude unmodified lines in session
  832.        ^expara           exclude by paragraph
  833.        ^expararem           exclude by paragraph - remove mark
  834.        ^exparases           exclude by paragraph entire session
  835.        ^fillblock           fill with block pattern
  836.        ^fillblockrem       fill with block pattern - remove mark
  837.        ^fillnum           fill with numeric line pattern
  838.        ^fillnumrem           fill with numeric line pattern - remove mark
  839.        ^flow           flow text
  840.        ^flowextrasp        flow with extra blank at end of sentence
  841.        ^flowextraspkp       flow with extra blank at end of sen, kp mark
  842.        ^flowkp           flow text, keep mark
  843.        ^flowlist           flow into list
  844.        ^flowlistkp           flow into list, keep mark
  845.        ^getkey           gets a keystroke and puts it in var 0
  846.                    special keys are translated
  847.                    (see GETKEY AND STRUCTURED USER INPUT)
  848.        ^getkeyns           gets a keystroke and puts it in var 0
  849.                    special keys are not checked for
  850.        ^gotoarmk           go to area mark (top left corner)
  851.        ^gotoarmkbl           go to bottom left corner of area mark
  852.        ^gotoarmkbr           go to bottom right corner of area mark
  853.        ^gotoarmktr           go to top right corner of area mark
  854.        ^gotopsmk           go to position mark
  855.        ^halt           breaks out of macro system
  856.        ^help           help
  857.        ^help(1..25)        help starting on page A..Y
  858.        ^hicsr(1..127)       highlight cursor for 1..126 blinks or
  859.                    indefinitely
  860.        ^if< x y           if x<y then don't skip next token
  861.        ^if<= x y           if x<=y
  862.        ^if<> x y           if x<>y (not equal)
  863.        ^if<>0 x           if x<>0 (not equal)
  864.        ^if= x y           if x=y
  865.        ^if=0 x           if x=0
  866.        ^if> x y           if x>y
  867.                                          
  868.  
  869.                                        p-16
  870.        ^if>= x y           if x>=y
  871.        ^ifcharblank        if current character is blank
  872.        ^ifcharinword       if current char is in a word
  873.                    This function checks if the current
  874.                    character is in the set of characters used
  875.                    with the Find commands Word option.
  876.        ^ifcharnotblank       if current char is not blank
  877.        ^ifcharnotinword       if current char is not in a word
  878.        ^ifcsrcmdln           if cursor on cmd line don't skip next token
  879.        ^ifcsrtxt           if cursor in text area
  880.        ^ifeditable           if current line is editable
  881.        ^ifinsmd           if insert mode
  882.        ^iflnadd           if current line was added
  883.        ^iflnblank           if current line or excluded group is blank
  884.        ^iflnexcluded       if current line is excluded
  885.        ^iflnmk           if current line has an area mark
  886.        ^iflnmod           if current line is modified
  887.        ^iflnnotadd           if current line was not added
  888.        ^iflnnotblank       if cur line or excluded group not blank
  889.        ^iflnnotexcluded       if current line not excluded
  890.        ^iflnnotmk           if current line does not have an area mark
  891.        ^iflnnotmod           if current line is not modified
  892.        ^iflnnotpsmk        if current line does not have an pos mark
  893.        ^iflnnottopbot       if cursor is not on TOP --- or BOTTOM ---
  894.        ^iflnpsmk           if current line has a position mark
  895.        ^iflntopbot           if cursor is on TOP --- or BOTTOM --- line
  896.        ^ifnoteditable       if current line not editable
  897.        ^ifnotsuccess       if previous function was not successful
  898.                    "Not found", "No files" messages as well as
  899.                    any error messages make this true.
  900.        ^ifpendingcmd x       if uppercase(first nonblank on command
  901.                    line) is x (set x to ^0 to catch 0..9)
  902.        ^ifpendingcmdnot x       if uppercase(first nonblank on command line)
  903.                    is not x (set x to ^0 to catch 0..9)
  904.        ^ifrplmd           if replace mode
  905.        ^ifsuccess           if previous function was successful
  906.        ^ignoreexlnsmd       sets ignore excluded lines mode on/off
  907.        ^ignoreexlnsmd1       sets ignore excluded lines mode on only for
  908.                    the next non-control function
  909.        ^ignoreexlnsmdoff       sets ignore excluded lines mode off
  910.        ^ignoreexlnsmdon       sets ignore excluded lines mode on
  911.                    Sets "permanent" ignore excluded lines mode.
  912.                    It will be turned on only if there is an
  913.                    area mark and will be turned off by any
  914.                    functions that do not use this mode. This is
  915.                    not used in either REPROF.1 or REPROF.2.
  916.        ^inhibitscrn        inhibit display updates
  917.                    Causing an "Are you sure? (Y/N)" prompt,
  918.                    going into help mode, or not being in a
  919.                    macro updates the screen and enables screen
  920.                    updates.
  921.        ^insar           insert area
  922.        ^insmd           insert mode
  923.        ^insrplmd           insert mode/replace mode
  924.        ^join           join lines
  925.        ^jumpbk(1..126)       jump backwards 1..126 macro tokens
  926.        ^jumpbklb(1..63)       jump backward to label
  927.                                          
  928.  
  929.                                        p-17
  930.        ^jumpfor(1..126)       jump 1..126 macro steps
  931.        ^jumpforlb(1..63)       jump forward to label
  932.        ^jumpforlbcycle(1..10)  jump forward to label 1..n
  933.                    ^jumpforlbcycle jumps to label 1..n based on
  934.                    the number of consecutive macro calls. Each
  935.                    leg of the macro must end with ^setprevfcn
  936.                    ^macro(*) to continue the cycle. See
  937.                    MULTIFUNCTION MACROS.
  938.        ^keyfcn x           executes the function at address x
  939.        ^label(1..63)       label noop
  940.        ^label(*)           label noop catches all jump*lb(1..63)
  941.        ^lfside           left side
  942.        ^lfsiderem           left side - remove mark
  943.        ^lowercase           lowercase
  944.        ^lowercaserem       lowercase - remove mark
  945.        ^macro(0..127)       execute macro 0..127
  946.        ^macro(*)           execute current macro (this is for use
  947.                    with ^setprevfcn, ^setvar, etc.)
  948.        ^menu(1..39)        displays menu A..Y, 1..9, α, ß, Γ, π, Σ
  949.                    (see MENUS)
  950.        ^mergeoverlay       merging overlay (overlays only where target
  951.                    is blank)
  952.        ^mkcol           mark column of area
  953.        ^mkcolres           mark column of area with mark resizing
  954.        ^mkcor           mark corner of area
  955.        ^mkcorlm           mark corner of area - always uses last area
  956.                    mark margin, not word wrap margin, for alt-l
  957.                    alt-b
  958.        ^mkcorlmres           mark corner of area with mark resizing
  959.        ^mkcorres           mark corner of area with mark resizing
  960.        ^mkln           mark line of area
  961.        ^mklnres           mark line of area with mark resizing
  962.        ^mkses           mark entire session
  963.        ^movearmk           moves area mark (not contents) to cursor
  964.        ^movelns           move line area
  965.        ^newln(1..128)       insert 1..128 new lines, don't change
  966.                    cursor column
  967.        ^newlnalign(1..128)       insert 1..128 new lines, align cursor
  968.        ^newlncol1(1..128)       insert 1..128 new lines, put cursor in
  969.                    column 1
  970.        ^newlnww(1..128)       insert 1..128 new lines, put cursor in
  971.                    left word wrap column
  972.        ^nextses           next edit session
  973.        ^noop           no operation
  974.        ^overlayar           overlay area
  975.        ^overlaycmd           overlay pending command at cursor
  976.                    Does not work on command line.
  977.        ^overlaydate        overlays date at cursor
  978.        ^overlayfile        overlays file name at cursor
  979.        ^overlaytime        overlays time at cursor
  980.        ^panel(1..39)       displays panel A..Y, 1..9, α, ß, Γ, π, Σ
  981.                    (see PANELS)
  982.        ^patchbyte a b       patch byte b at address a
  983.                    Do not patch @lnlen. Colors will not be
  984.                    updated until after a DOS shell or ^setat*
  985.                    function.
  986.        ^patchbytes(1..63) a b  patches 1..63 bytes starting at a
  987.                                          
  988.  
  989.                                        p-18
  990.        ^patchword a w       patch word w at address a
  991.        ^patchwords(1..63) a w  patches 1..63 words starting at a
  992.        ^pause           pause for about 1 second
  993.        ^prevses           previous edit session
  994.        ^recallcmdbk        recall commands reverse order
  995.        ^recallcmdfor       recall commands
  996.        ^repcurchange       repeats current change (including cmd line)
  997.        ^repcurfind           repeats current find (including cmd line)
  998.        ^repdispchange       repeat displayed change
  999.        ^repdispfind        repeats displayed find
  1000.        ^rescsrps           restores cursor position, ins/rpl mode
  1001.        ^resexmd           restores ignore excluded lines mode
  1002.        ^resfindchange       restores find, change strings, options
  1003.        ^reshow           reshow
  1004.        ^resseschg           restores session chgd state
  1005.        ^revexlns           reverse excluded lns in area
  1006.        ^revexlnsrem        reverse excluded lines in area - remove mark
  1007.        ^revexlnsses        reverse excluded lns in session
  1008.        ^rplmd           replace mode
  1009.        ^rtjustify           right justify
  1010.        ^rtjustifyexspkp       rt justify, extra space after sen, keep mark
  1011.        ^rtjustifyextrasp       right justify, extra space after sentence
  1012.        ^rtjustifykp        right justify, keep mark
  1013.        ^rtside           right side
  1014.        ^rtsiderem           right side - remove mark
  1015.        ^savecsrps           saves cursor position, insert/replace
  1016.                    mode, session changed flag, find/change
  1017.                    variables, ignore excluded lines mode flag
  1018.        ^scrollcenln        scroll current line to center of screen
  1019.        ^scrolldn(0..78)       scroll down 0..78 lines - max 1 screen
  1020.        ^scrolldn1/2pg       scroll down 1/2 page
  1021.        ^scrolldn1/4pg       scroll down 1/4 page
  1022.        ^scrolldn1/8pg       scroll down 1/8 page
  1023.        ^scrolldn1pg        scroll down 1 page
  1024.        ^scrolldncsr        scroll down to cursor
  1025.        ^scrolllf(0..127)       scroll left 254,1..127 cols
  1026.        ^scrolllfcsr        scroll left to cursor
  1027.        ^scrollrt(0..127)       scroll right 254,1..127 cols
  1028.        ^scrollrtcsr        scroll right to cursor
  1029.        ^scrollup(0..78)       scroll up 0..78 lines - max 1 screen
  1030.        ^scrollup1/2pg       scroll up 1/2 page
  1031.        ^scrollup1/4pg       scroll up 1/4 page
  1032.        ^scrollup1/8pg       scroll up 1/8 page
  1033.        ^scrollup1pg        scroll up 1 page
  1034.        ^scrollupcsr        scroll up to cursor
  1035.        ^set/re/unpsmk       set/reset/unset position mark
  1036.        ^setchgd           set session changed flag
  1037.        ^setatb/w           installs the b/w attribute set
  1038.                    All future screen updates use the new
  1039.                    attributes and the b/wcsrtp. To rewrite the
  1040.                    screen completely, use ^updatescrn.
  1041.        ^setatclr           installs the color attribute set
  1042.        ^setatcur           installs the current attribute set
  1043.        ^setatlcd           installs the lcd attribute set
  1044.        ^setatmon           installs the monochrome attribute set
  1045.                                          
  1046.  
  1047.                                        p-19
  1048.        ^setdrawingmdcc       set drawing mode current character
  1049.        ^setdrawingmddl       set drawing mode double line
  1050.        ^setdrawingmdoff       set drawing mode off
  1051.        ^setdrawingmdsl       set drawing mode single line
  1052.        ^setprevfcn x       set previous function variable to x
  1053.        ^setpsmk           set position mark
  1054.        ^setshiftmd(0..26)       set shift mode to off, a..z
  1055.        ^settabset(1..10)       set tab set to 1..10
  1056.        ^setwwlf           set left word wrap margin to cursor pos
  1057.        ^setwwlfx x           set left word wrap margin to x
  1058.        ^setwwrt           set right word wrap margin to cursor pos
  1059.        ^setwwrtx x           set right word wrap margin to x
  1060.        ^shiftdn           shift down area
  1061.        ^shiftdnrem           shift down area - remove mark
  1062.        ^shiftlf           shift left area
  1063.        ^shiftlfrem           shift left area - remove mark
  1064.        ^shiftrt           shift right area
  1065.        ^shiftrtrem           shift right area - remove mark
  1066.        ^shiftup           shift up area
  1067.        ^shiftuprem           shift up area - remove mark
  1068.        ^sp               space
  1069.        ^split/join           split line/join lines
  1070.        ^splitscrn(6..77)       splits the screen at line 6..77
  1071.                    This function restricts windows to a minimum
  1072.                    of three text lines.
  1073.        ^suppressays        suppress "Are you sure?" or "Replace file?"
  1074.                    on next fcn
  1075.        ^tabauto1ln(0..127)       auto tab looking at current line,
  1076.                    max 254,1..127
  1077.        ^tabauto2ln(0..127)       auto tab looking at 2 lines,
  1078.                    max 254,1..127
  1079.        ^tabauto3ln(0..127)       auto tab looking at 3 lines,
  1080.                    max 254,1..127
  1081.        ^tabauto4ln(0..127)       auto tab looking at 4 lines,
  1082.                    max 254,1..127
  1083.        ^tabauto5ln(0..127)       auto tab looking at 5 lines,
  1084.                    max 254,1..127
  1085.        ^tabauto6ln(0..127)       auto tab looking at 6 lines,
  1086.                    max 254,1..127
  1087.        ^tabauto7ln(0..127)       auto tab looking at 7 lines,
  1088.                    max 254,1..127
  1089.        ^tabauto8ln(0..127)       auto tab looking at 8 lines,
  1090.                    max 254,1..127
  1091.        ^tabbkauto1ln(0..127)   auto back tab looking at current line,
  1092.                    max 254,1..127
  1093.        ^tabbkauto2ln(0..127)   auto back tab looking at 2 lines
  1094.                    max 254,1..127
  1095.        ^tabbkauto3ln(0..127)   auto back tab looking at 3 lines
  1096.                    max 254,1..127
  1097.        ^tabbkauto4ln(0..127)   auto back tab looking at 4 lines
  1098.                    max 254,1..127
  1099.        ^tabbkauto5ln(0..127)   auto back tab looking at 5 lines
  1100.                    max 254,1..127
  1101.        ^tabbkauto6ln(0..127)   auto back tab looking at 6 lines
  1102.                    max 254,1..127
  1103.        ^tabbkauto7ln(0..127)   auto back tab looking at 7 lines
  1104.                    max 254,1..127
  1105.                                          
  1106.  
  1107.                                        p-20
  1108.        ^tabbkauto8ln(0..127)   auto back tab looking at 8 lines
  1109.                    max 254,1..127
  1110.        ^tabbkcurset        bk tab - ref current tab set
  1111.        ^tabcurset           tab - ref current tab set
  1112.        ^topoffile           to top of file
  1113.        ^unexchildren       unexcludes children
  1114.        ^unexfirstln        unexclude first line in group
  1115.        ^unexlastln           unexclude last line in group
  1116.        ^unexmkchildren       unexcludes children ignoring text outside
  1117.                    the current area mark margins
  1118.        ^unmk           unmark area
  1119.        ^unsetpsmk           unset position mark
  1120.        ^unsplitscrn        unsplit the screen
  1121.        ^updatescrn           update screen, allow updates
  1122.                    This function is needed to turn the screen
  1123.                    on before a macro is finished or to update
  1124.                    the screen colors after ^setat*. If a macro
  1125.                    ends with the screen disabled, a complete
  1126.                    screen update is done automatically.
  1127.        ^updatescrninh       update screen but keep inhibited
  1128.                    This function may be used to update the
  1129.                    screen with a new permanent panel without
  1130.                    the user seeing anything.
  1131.        ^uppercase           uppercase
  1132.        ^uppercaserem       uppercase - remove mark
  1133.        ^upperfirst           uppercase first letter
  1134.        ^upperfirstrem       uppercase first letter - remove mark
  1135.        ^varadd(0..15) x       var(0..15) := var(0..15) + x
  1136.                    X should be less than $F000.
  1137.        ^varand(0..15) x       var(0..15) := var(0..15) and x
  1138.        ^vardiv(0..15) x       var(0..15) := var(0..15) div x
  1139.        ^varmul(0..15) x       var(0..15) := var(0..15) * x
  1140.        ^varor(0..15) x       var(0..15) := var(0..15) or x
  1141.        ^varset(0..15) x       var(0..15) := x
  1142.        ^varsub(0..15) x       var(0..15) := var(0..15) - x
  1143.        ^vartype(0..15)       types character representation of low byte
  1144.                    of variable 0..15
  1145.        ^windowa           make window a active
  1146.        ^windowa/b           make other window active
  1147.        ^windowb           make window b active
  1148.        ^wordcmdln           moves the word at the cursor to cmd line
  1149.  
  1150.        Parameters that are separate tokens should not  be between $F000 and
  1151.        $FFFF.  If they are then they may be  mistaken for a label or one of
  1152.        the functions listed below.
  1153.  
  1154.        The     following  functions  may  be    used  as  parameters  to  above
  1155.        functions.  The variables that contain the values cannot be directly
  1156.        written - they must be updated by RE functions that affect them, for
  1157.        example setting an area mark sets armkcol1 and armkcol2.
  1158.  
  1159.          ^@mac x             the patch offset of macro x
  1160.          ^armkcol1             left area mark column
  1161.          ^armkcol2             right area mark column
  1162.                      These are not accurate unless there is an
  1163.                      area mark.
  1164.          ^armkmd             ^sp, a, or á (32, 97, or 160)
  1165.                                          
  1166.  
  1167.                                        p-21
  1168.          ^armknotonscrn         0 if area mark is on the screen
  1169.          ^armkses             session pointer of area mark session
  1170.                      Pointers change during database
  1171.                      defragmentation - across macros, DOS
  1172.                      shells, area mark functions.
  1173.          ^armkwd             area mark width
  1174.          ^bytepatch a         byte at patch address a
  1175.          ^chgd             0 if the session is unchanged
  1176.          ^curchar             character under cursor
  1177.                      This value is not accurate unless the
  1178.                      current line is editable.
  1179.          ^curcol             current cursor column
  1180.          ^currow             current screen line (1..80)
  1181.          ^curscol             current cursor screen column
  1182.          ^curses             session pointer of current session
  1183.          ^curwindow          current window (0, 1 for a, b)
  1184.          ^drawingmd          drawing mode (0..3)
  1185.          ^inarmk             0 if the cursor is not in the area mark
  1186.          ^maxlnwidth         maximum line length
  1187.          ^msgnum             current message number
  1188.          ^psmkcol             position mark column
  1189.                      This is not accurate unless there is a
  1190.                      position mark.
  1191.          ^psmkses             session pointer of position mark session
  1192.                      This is not accurate unless there is a
  1193.                      position mark.
  1194.          ^insrplmdval         0 for replace, 1 for insert
  1195.          ^otherwinses         session pointer of the inactive window
  1196.          ^scrncol             leftmost column on screen
  1197.          ^scrnheight         virtual screen height in lines
  1198.                      (active window, status, command)
  1199.          ^scrnheightfull         full screen height in lines
  1200.                      (windows, perm panel, status, command)
  1201.          ^scrnsplit          number of text lines in window a or 0 if
  1202.                      there is no split
  1203.          ^scrnwidth          screen width in columns
  1204.          ^shiftmd             shift mode
  1205.          ^var(0..15)         value of variable 0..15
  1206.          ^wordpatch a         word at patch address a
  1207.          ^wordwrapcol1         left word wrap column
  1208.          ^wordwrapcol2         right word wrap column
  1209.          @*              numeric value of any patch location
  1210.          ^*              numeric value of any function except
  1211.                      those noted here
  1212.  
  1213.        For example:
  1214.  
  1215.          ^if= ^var(0) ^var(1)           compares var(0) and var(1)
  1216.          ^varset(2) ^curchar           sets var(2) to the current
  1217.                            character
  1218.          ^varset(1) ^bytepatch @defwraprt  sets var(1) to the default right
  1219.                            word wrap margin.
  1220.  
  1221.        There  is no range checking on  the numeric parameters of functions,
  1222.        so be careful.
  1223.                                          
  1224.  
  1225.                                        p-22
  1226.        Any    function  (except the ASCII characters) prefixed with & instead
  1227.        of ^ will be the same function but keyboard decoasted.  For example,
  1228.        &scrolllf(1)  scrolls  left    1   column  and  is   decoasted,  while
  1229.        ^scrolllf(1) scrolls left 1 column but is not decoasted.
  1230.  
  1231.        From a macro the & and ^  distinction is different - & means end the
  1232.        macro  if  the function  is not successful and ^ means continue  the
  1233.        macro regardless of the outcome. See MACROS.
  1234.  
  1235.        ^if    functions that evaluate to false skip one macro  token.  If the
  1236.        desired  true function uses more than one token,  use the reverse if
  1237.        function and jump around the function. For example, instead of
  1238.  
  1239.          ^if=0 ^var(1) ^varset(0) 1
  1240.  
  1241.        which will not work correctly, use
  1242.  
  1243.          ^if<>0 ^var(1) ^jumpfor(3) ^varset(0) 1.
  1244.                                          
  1245.  
  1246.                                        p-23
  1247.      @SPECIALKEY AND @SPECIALKAL - SPECIAL KEYS
  1248.  
  1249.        Starting  at @specialkey are nine words that define the special keys
  1250.        to use for cursor left, cursor right, cursor up, cursor down, enter,
  1251.        esc,  pgup, pgdn,  and help    in the    drawing modes,    when a    message
  1252.        requests  that you press enter to continue, for the help system, and
  1253.        for menus.  The words  contain  the location in  the key translation
  1254.        table of the key to use.  The default set is @csrlf, @csrrt, @csrup,
  1255.        @csrdn,  @ent, @esc, @pgup, @pgdn, and @a-f1.  You must be  sure  to
  1256.        assign  only locations that contain normal  RE  functions, not ASCII
  1257.        codes.  Each location must be unique to be seen.  If other keys have
  1258.        the same  function as the  ones assigned here, then they will  cause
  1259.        the same action in the help system, etc.
  1260.  
  1261.        At  @specialkal  is    another  set  of nine  words that are alternate
  1262.        values for the special keys.  They should have  the same  values  as
  1263.        those  for @specialkey unless you want another key to  have the same
  1264.        function. The default set is @mouself, @mousert, @mouseup, @mousedn,
  1265.        @mousebtnlf,  @mousebtnrt, @pgup, @pgdn, and @a-f1.    This  lets  the
  1266.        mouse enter six of the special keys.
  1267.                                          
  1268.  
  1269.                                        p-24
  1270.      MACROS
  1271.  
  1272.        RE  lets  you define up  to 127  macros numbered 1 to 127.  To put a
  1273.        macro in in an RE profile, use the line
  1274.  
  1275.          X macronumber function function ...
  1276.  
  1277.        and the macro may be continued on a new line with
  1278.  
  1279.          Y function function ...
  1280.  
  1281.        Macros are nestable to a  depth of 16 calls.  No checking is done to
  1282.        insure that the stack does not overflow - it is  up    to  you to  not
  1283.        exceed  this  maximum.  If  a macro calls another macro and the next
  1284.        function in the first macro is ^endmacro then this is  equivalent to
  1285.        jumping  to    the new macro rather than calling it and no extra stack
  1286.        space is taken.
  1287.  
  1288.        To use macro number i, assign the function ¯o(i) to a key.
  1289.  
  1290.        The functions are listed in RE FUNCTIONS.  When functions are called
  1291.        from  a macro, if a function is prefixed with & instead of ^ then if
  1292.        the    function  causes an  error  message, the  macro  is prematurely
  1293.        ended. If not then the macro continues despite the message. Messages
  1294.        that do not cause the macro to end, even if the function is prefixed
  1295.        with &  are    Changed,  Default disk/dir changed, Enter  ASCII  code,
  1296.        Found,  Free memory    low, Free  paragraphs,    Numeric  fill overflow,
  1297.        Printed, Saved.
  1298.  
  1299.        Some functions  are considered  control functions and cannot  affect
  1300.        the current position  or  database.    These  functions do  not update
  1301.        messages,  reset  cyclic functions, or  reset  the  "are  you sure?"
  1302.        continued  feature  (this lets  you do  repeated destructive  shifts
  1303.        without being prompted each time). The functions are:
  1304.  
  1305.          ^endmacro              ^jump..        ^patch..
  1306.          ^getkey..              ^keyfcn        ^setprevfcn
  1307.          ^halt              ^label        ^updatescrn
  1308.          ^if..              ^macro        ^var.. (except vartype)
  1309.          ^ignoreexlnsmd1          ^menu
  1310.          ^inhibitscrn          ^panel
  1311.  
  1312.        So if you  construct a macro of  just these    functions with a single
  1313.        core operation, any dependance of the core operation on the previous
  1314.        function is transferred through the control functions. The following
  1315.        macro  shifts the contents of the area mark left if    in  insert mode
  1316.        and right if in replace mode, and repeated destructive shifts do not
  1317.        cause "are you sure?" prompts.
  1318.  
  1319.          X 60 ^ifinsmd &shiftlf ^ifrplmd &shiftrt.
  1320.  
  1321.        To use  draw mode  from inside a  macro trace  out the  drawing with
  1322.        ^keyfcn @csrup, ^keyfcn @csrdn, ^keyfcn @csrlf, and ^keyfcn @csrrt.
  1323.                                          
  1324.  
  1325.                                        p-25
  1326.      STARTUP MACRO
  1327.  
  1328.        Macro 0 is  the startup  macro.  When RE has finished reading in its
  1329.        initial file, before user input is allowed, macro 0 is called. Macro
  1330.        0 is just like any other macro except for this.
  1331.  
  1332.        In REPROF.1 and REPROF.2 macro 0 does nothing.
  1333.  
  1334.      VARIABLES
  1335.  
  1336.        RE has 16 word (unsigned 2 byte) variables numbered 0..15.  Variable
  1337.        i  is set with  ^varset(i)  x,  and accessed  as  a    parameter  with
  1338.        ^var(i).  You  can  add  to    a  variable  (^varadd(i)  x),  subtract
  1339.        (^varsub), multiply (^varmul), divide (^vardiv), or (^varor), or and
  1340.        (^varand).  The low byte of a  variable may be typed, as  if entered
  1341.        from the keyboard, with ^vartype(i).
  1342.  
  1343.        Variable 0 is special.  It is used by the functions: ^execfcn  which
  1344.        executes   the  function  represented  by   the  value   of    var(0);
  1345.        ^menu(0..39)  which    processes  a menu  and returns    the  result  in
  1346.        var(0); ^getkey which gets a keyboard entry and puts the  associated
  1347.        function into  var(0),  translating    special  keys  into  ^jumpforlb
  1348.        functions; ^getkeyns  which is like ^getkey except that special keys
  1349.        are not translated;    and ^dispmsgnum(0..63) which displays a message
  1350.        followed by the value of var(0).
  1351.  
  1352.        To  set var(1) to  the value of  var(4)  use ^varset(1) ^var(4).  To
  1353.        compare var(1) to var(4) use ^if= ^var(1) ^var(4).
  1354.  
  1355.      MANIPULATION OF MACRO FUNCTIONS
  1356.  
  1357.        Each token in an  RE macro is one word, with an associated mnemonic.
  1358.        If a function has separate parameters (^setwwrtx x for example) then
  1359.        the parameter is a separate token and a variable may be used for the
  1360.        parameter.     If   the   function   has   an    attached   parameter
  1361.        (^setshiftmd(0..26)    for example) then that parameter is part of the
  1362.        function token and must be a constant.  If you need such a parameter
  1363.        to be variable  you can generate the required function in the macro.
  1364.        Set    variable  0 to the function with a 0 parameter, add the desired
  1365.        parameter to variable  0, and then execute the function in  variable
  1366.        0. For example to do the function ^setshiftmd(^var(1)) (which is not
  1367.        allowed) use this code:
  1368.  
  1369.          ^varset(0) ^setshiftmd(0) ^varadd(0) ^var(1) ^execfcn
  1370.                                          
  1371.  
  1372.                                        p-26
  1373.      HANDY MACRO SEQUENCES
  1374.  
  1375.        Here are a few useful macro sequences.  The first two put the cursor
  1376.        on the top and bottom of the current window.
  1377.  
  1378.          ^if= ^currow 1 ^csrdn ^if<> ^currow ^scrnheight ^csrdnwrap(77)
  1379.          ^if= ^currow 3 ^jumpfor(3) ^csrcmdln ^csrdn
  1380.  
  1381.        These put the cursor at the left and right side of the screen.
  1382.  
  1383.          ^if<> ^curcol 1 ^csrlfwrap(0)
  1384.          ^if<> ^curcol ^scrnwidth ^csrrtwrap(0)
  1385.  
  1386.        Here are traditional page up and page down sequences.
  1387.  
  1388.          ^savecsrps ^scrollup1pg ^rescsrps
  1389.          ^savecsrps ^scrolldn1pg ^rescsrps
  1390.  
  1391.        Also  see  REPROF.MAC.  This is a set  of macros that  may be useful
  1392.        including:
  1393.  
  1394.          rotating permanent panels
  1395.          record and playback keystrokes
  1396.          move marked area
  1397.          box the perimeter of the area mark
  1398.          delete blank lines in the area mark
  1399.          load multiple files on startup.
  1400.                                          
  1401.  
  1402.                                        p-27
  1403.      QUERYING MODES AND SITUATIONS
  1404.  
  1405.        There  are many  direct ^if    statements available for  querying  the
  1406.        state of RE, but there  also are many  possible queries that require
  1407.        looking at  specific  variables.  Here  is  a  list    of  useful  ^if
  1408.        commands.
  1409.  
  1410.        ^if<>0 ^inarmk         if cursor is in area mark
  1411.        ^if<>0 ^chgd          if session has been changed
  1412.        ^if<>0 ^armknotonscrn     if area mark is not in the window
  1413.                      (assumes an area mark exists)
  1414.        ^if<>0 ^psmkses         if there is a position mark
  1415.        ^if=  ^psmkses ^curses     if the current session has a pos mark
  1416.        ^if<> ^armkmd ^sp         if there is an area mark
  1417.        ^if=  ^armkmd a         if there is a completed area mark
  1418.        ^if=  ^armkses ^curses     if area mark is in the current session
  1419.                      (assumes an area mark exists)
  1420.        ^if= ^shiftmd 3         if shift mode is 3
  1421.        ^if<>0 ^drawingmd         if in one of the drawing modes
  1422.        ^if= ^curcol 34         if the cursor is in column 34
  1423.        ^if= ^curcol ^armkcol1     if cursor is in the left area mark col
  1424.                      (assumes an area mark exists)
  1425.        ^if= ^curchar S         if the current character is S
  1426.        ^if<>0 ^scrnsplit         if screen is split
  1427.  
  1428.      WORKING WITH A SPLIT SCREEN
  1429.  
  1430.        To  a macro (and to RE internally) a split screen window  appears to
  1431.        be just an ordinary small screen.  That is, the cursor row (^currow)
  1432.        moves sequentially  1, 3, 4, ..., ^scrnheight.  But you can    get the
  1433.        actual cursor  row by using ^scrnsplit.  To put  the cursor's actual
  1434.        screen row in var(1), use:
  1435.  
  1436.          ^varset(1) ^currow
  1437.          ^if= ^curwindow 0 ^jumpfor(3) ^varadd(1) ^scrnsplit
  1438.  
  1439.        Here is a function  that splits the    screen at the  current line, or
  1440.        unsplits the screen if it is already split.
  1441.  
  1442.          X 1
  1443.          Y ^if=0 ^scrnsplit ^jumpfor(3) ^unsplitscrn ^endmacro
  1444.          Y ^ifcsrcmdln ^jumpfor(4) ^varset(0) ^currow ^jumpfor(7)
  1445.          Y ^varset(0) ^scrnheight ^varadd(0) 2 ^vardiv(0) 2
  1446.          Y ^varadd(0) ^splitscrn(1) ^execfcn
  1447.  
  1448.        The ^splitscrn function  will not allow a window  of less than three
  1449.        text lines. If you unsplit the screen, put up a permanent panel, and
  1450.        then split it again at the same  line (the recommended procedure for
  1451.        displaying a permanent panel), the position of the split may change.
  1452.        And if you change the  number  of lines  on    the screen  from  a DOS
  1453.        shell, RE may reconfigure the screen  split (or even unsplit it)  to
  1454.        insure that each window has three lines.
  1455.                                          
  1456.  
  1457.                                        p-28
  1458.      MACRO CONTROL OF COMMANDS
  1459.  
  1460.        The enter key may be re-programmed to examine  pending  commands and
  1461.        take  specific action  based on  that information.  In REPROF.1  and
  1462.        REPROF.2 the mouse and keyboard enter functions are:
  1463.  
  1464.        * mouse enter
  1465.          X 105 ^macro(124) ^if=0 ^var(0) ^endmacro
  1466.          Y       ^macro(112)
  1467.        * keyboard enter
  1468.          X 106 ^macro(124) ^if=0 ^var(0) ^endmacro
  1469.          Y       ^csrreturn
  1470.  
  1471.        Macro 124  looks for a  pending  command  and  executes  it, setting
  1472.        var(0) to 0 if it found a command or 1 if not.
  1473.  
  1474.        * execute pending command and set var(0) to 0 or 1 if no command
  1475.          X 124 ^varset(0) 1
  1476.          Y       ^ifcsrtxt ^jumpfor(4)
  1477.          Y       ^iflnblank ^endmacro ^jumpfor(7)
  1478.          Y       ^ifpendingcmd F ^jumpfor(4)
  1479.          Y       ^ifpendingcmdnot C ^endmacro
  1480.          Y       ^execcmd ^varset(0) 0
  1481.  
  1482.        You    can replace macro 124 to change the way it decides if a command
  1483.        is pending or the way that it executes the command. An example is:
  1484.  
  1485.        * execute pending command and set var(0) to 0 or 1 if no command
  1486.          X 124 ^varset(0) 1
  1487.          Y       ^ifcsrtxt ^jumpfor(3)
  1488.          Y       ^iflnblank ^endmacro
  1489.          Y       ^ifpendingcmd F ^jumpforlb(2)
  1490.          Y       ^ifpendingcmd C ^jumpforlb(2)
  1491.          Y       ^ifcsrtxt ^endmacro
  1492.          Y       ^ifpendingcmdnot S ^jumpfor(9)
  1493.          Y         ^varset(0) ^curses       // * save-clear mod add flags
  1494.          Y         &execcmd
  1495.          Y         ^if= ^curses ^var(0) ^clrmodadd
  1496.          Y         ^jumpforlb(1)
  1497.          Y       ^ifpendingcmdnot E ^jumpfor(7)
  1498.          Y         &execcmd              // * edit-exclude at col 3
  1499.          Y         ^csrtxt ^csrrt(2) ^exindentses ^csrcmdln
  1500.          Y         ^jumpforlb(1)
  1501.          Y       ^ifpendingcmdnot ^0 ^jumpfor(3)
  1502.          Y         ^execcmdnorecall          // * don't save line num cmds
  1503.          Y         ^jumpforlb(1)
  1504.          Y       ^label(2) ^execcmd
  1505.          Y       ^label(1) ^varset(0) 0
  1506.                                          
  1507.  
  1508.                                        p-29
  1509.      MACRO DEFINED SHIFT MODES
  1510.  
  1511.        You    can  set  the  user  shift  mode  with    the  ^setshiftmd(0..26)
  1512.        function.  0 is the default.  1..26 are displayed on top of the caps
  1513.        lock indicator as a..z.
  1514.  
  1515.        Here is a macro that rotates between shift modes a, b, and off
  1516.  
  1517.        X 1 ^if<>0 ^shiftmd ^jumpfor(3) ^setshiftmd(1) ^endmacro
  1518.        Y   ^if<> ^shiftmd 1 ^jumpfor(3) ^setshiftmd(2) ^endmacro
  1519.        Y   ^setshiftmd(0)
  1520.  
  1521.        And    to use    the shift modes,  here is  a macro  that  looks at  the
  1522.        shift mode and does one of three different functions.
  1523.  
  1524.        X 2 ^if<>0 ^shiftmd ^jumpforlb(1)
  1525.        Y   functions for shift mode off ...
  1526.        Y   ^endmacro
  1527.        Y   ^label(1) ^if<> ^shiftmd 1 ^jumpforlb(1)
  1528.        Y   functions for shift mode 1 ...
  1529.        Y   ^endmacro
  1530.        Y   ^label(1) ^if<> ^shiftmd 2 ^endmacro
  1531.        Y   functions for shift mode 2 ...
  1532.  
  1533.        You can also use the patch functions to reset key assignments when a
  1534.        new shift mode is set, so you could reassign the entire function key
  1535.        set based on shift mode.
  1536.  
  1537.        If  you  use shift modes, it is a good idea to set a permanent panel
  1538.        for each  mode.  This  makes it  obvious  what  mode  is current and
  1539.        provides some help for that mode. See PANELS.
  1540.  
  1541.      MULTIFUNCTION MACROS
  1542.  
  1543.        The    RE  macro language  makes  it easy  to    create    macros    that do
  1544.        different  functions on consecutive calls.  This  feature is used in
  1545.        the default profile on the  alt-v key to produce the center function
  1546.        on the first press, left side on the  second, and right side  on the
  1547.        third.  Similar (though  some a little more complex) macros are used
  1548.        to rotate drawing modes (alt-z), move to the various  marks (alt-g),
  1549.        and     exclude  and  unexclude   children   (alt-6).     Here    is  the
  1550.        center/left/right macro.
  1551.  
  1552.          X 102 ^jumpforlbcycle(3)
  1553.          Y       ^label(1) ¢er ^jumpfor(6)
  1554.          Y       ^label(2) &lfside ^jumpfor(3)
  1555.          Y       ^label(3) &rtside
  1556.          Y       ^setprevfcn ^macro(*)
  1557.  
  1558.        ^jumpforlbcycle  jumps to one of  label 1..3  based on the number of
  1559.        consecutive calls to macro 102 (any number up to 10 may be used). To
  1560.        keep  the  cycle going, before the macro is called a second time, RE
  1561.        must think that the most recent function was that macro. ^setprevfcn
  1562.        ^macro(*) just before ending the macro does this.
  1563.                                          
  1564.  
  1565.                                        p-30
  1566.      GETKEY AND STRUCTURED USER INPUT
  1567.  
  1568.        ^getkey  gets a  key from the  user    and puts  the function    that is
  1569.        assigned to that key in variable 0.    If any    of the special keys are
  1570.        pressed then they are returned as ^jumpforlb(i) where i is:
  1571.  
  1572.          1 for cursor left           4 for cursor down    7 for page up
  1573.          2 for cursor right        5 for enter        8 for page down
  1574.          3 for cursor up           6 for escape        9 for help
  1575.  
  1576.        ^getkeyns is the  same as getkey  except  that special  keys are not
  1577.        checked for.
  1578.  
  1579.        This  lets you create structured data input macros.    An example is a
  1580.        macro that gets a user selection from vertical list.  The cursor  is
  1581.        left on the selected line and variable  0 contains ^jumpforlb(5) for
  1582.        enter or ^jumpforlb(6) for escape.
  1583.  
  1584.          M 50 ^msg Select line             // * define message 50
  1585.          X 1
  1586.          Y ^csrtxt ^csrlf(0)
  1587.          Y ^label(1) ^dispmsg(50) ^getkey
  1588.          Y ^if< ^var(0) ^jumpforlb(3) ^jumpbklb(1)
  1589.          Y ^if> ^var(0) ^jumpforlb(9) ^jumpbklb(1)
  1590.          Y ^execfcn
  1591.          Y ^label(3) ^csrup     ^jumpbklb(1) // * csrup
  1592.          Y ^label(4) ^csrdn     ^jumpbklb(1) // * csrdn
  1593.          Y ^label(7) ^keyfcn @pgup    ^jumpbklb(1) // * pgup
  1594.          Y ^label(8) ^keyfcn @pgdn    ^jumpbklb(1) // * pgdn
  1595.          Y ^label(9) ^help(4)    ^jumpbklb(1) // * help pg 4
  1596.          Y ^label(5) ^ifnoteditable ^jumpbklb(1) // * enter
  1597.          Y ^label(6) ^dispmsg(0)             // * esc
  1598.  
  1599.        This macro  puts up    a panel and, on the next  keystroke, removes it
  1600.        and executes the keystroke.
  1601.  
  1602.          X 1 ^panel(34) ^getkeyns ^updatescrn ^execfcn
  1603.  
  1604.        If you need to look for a specific key, rather  than a function, the
  1605.        only way to    do it is to  compare the function returned from ^getkey
  1606.        with the function assigned to that  key.  If the function on the key
  1607.        is  not unique then other keys can  trigger    the same response.  You
  1608.        need to and off $80    from the key function because that  is    used by
  1609.        the keyboard routine and then removed. For example, to get a key and
  1610.        check to see if it was alt-s:
  1611.  
  1612.          ^getkey
  1613.          ^varset(1) ^wordpatch ^@a-s ^varand(1) $FF7F
  1614.          ^if= ^var(0) ^var(1)
  1615.  
  1616.        Functions $4000 to $4FFF are not used by RE. You can assign these to
  1617.        keys, use ^getkey or ^getkeyns to get the function, and have a macro
  1618.        interpret them.  This may be useful when getting  user input that is
  1619.        only  valid when a specific    panel  is  displayed.  Or  $80 with the
  1620.        number to enable keyboard decoasting.
  1621.                                          
  1622.  
  1623.                                        p-31
  1624.      MESSAGES, MESSAGE TYPES, AND USER DEFINED MESSAGES
  1625.  
  1626.        NUMBER      MESSAGE           TYPE    NUMBER       MESSAGE       TYPE
  1627.  
  1628.         0 A   wd-     ht-        $18    24 Printed            $08
  1629.         1 Changed            $08    25 Incorrect number        $05
  1630.         2 Found            $08    26 DOS memory error        $2F
  1631.         3 Line(s) too long        $1D    27 Drive not ready        $07
  1632.         4 Saved            $28    28 Disk write protected        $07
  1633.         5 Insufficient free memory    $25    29 Incorrect option        $05
  1634.         6 Line(s) split        $1F    30 Incorrect file name        $05
  1635.         7 Not found         $0C    31 Incorrect Find string     $05
  1636.         8 Saved - file replaced    $28    32 Incorrect Change string   $05
  1637.         9 Memory full - Data Lost    $07    33 Are you sure? (Y/N)        $01
  1638.        10 Parameter too long    $05    34 Mark is not in session    $05
  1639.        11 Area mark already exists    $05    35 Free paragraphs        $08
  1640.        12 No area mark        $05    36 Numeric fill overflow     $08
  1641.        13 No line area mark     $05    37 Cannot use display mode   $25
  1642.        14 No mark            $05    38 Defragmenting memory        $00
  1643.        15 Free memory low        $08    39 Replace file? (Y/N)        $00
  1644.        16 Incorrect cursor position $05    40 Press Enter to continue   $00
  1645.        17 Disk/device error     $07    41 Default disk/dir changed  $09
  1646.        18 Mark is not on screen    $05    42 No files            $0C
  1647.        19 Enter ASCII code        $00    43 Changed > 10000        $08
  1648.        20 Incorrect command     $05    44 Found > 10000         $08
  1649.        21 Insufficient disk space    $07    45 user defined message        $00
  1650.        22 Not in ring        $05    .  .                .
  1651.        23 Insert A:, press Enter    $00    63 user defined message        $00
  1652.  
  1653.        The message type bytes are at @MSGTP(0..63). The bits of the message
  1654.        type bytes are:
  1655.  
  1656.         $1 - red (and beep if "B @beep ^error" is set)
  1657.         $2 - beep (unless "B @beep ^no" is set)
  1658.         $4 - ends a macro if displayed by an & prefixed function
  1659.          This bit is also queried by the ^ifsuccess function.
  1660.         $8 - this message indicates a command or function was successful If
  1661.          a command finishes with this message then it is stored in  the
  1662.          recall list and the command line is blanked.
  1663.        $10 - this message indicates an edit command was successful
  1664.          An Edit command starts a new session and reads in  a file.  If
  1665.          the  file read finishes with this message then the new session
  1666.          is kept, otherwise the new session is removed from memory.
  1667.        $20 - if RE ends with this message, display it in DOS
  1668.  
  1669.        The message type mnemonics are ^critical  ($07), ^error ($05),  ^msg
  1670.        ($00).
  1671.  
  1672.        You may define messages 45..63 (and rewrite 0..44). To set a message
  1673.        use    the line "M number type message" anywhere in the profile before
  1674.        the help  text.  Number is  the message number, type  is the message
  1675.        type (^critical, ^error, ^msg, or a number), and the message text is
  1676.        up to 25 characters. For example: "M 45 ^msg Macro complete".
  1677.  
  1678.        Use     the   function   ^dispmsg(0..63)   to     display   a   message.
  1679.        ^dispmsgnum(0..63) displays    a message  followed  by  the  value  of
  1680.        variable 0.
  1681.                                          
  1682.  
  1683.                                        p-32
  1684.      TAB SETS
  1685.  
  1686.        You may define  up to ten tabs sets numbered  1..10.  Set 1    must be
  1687.        defined since it is the default that RE sets up on entry.
  1688.  
  1689.        To define a tab set, use the line
  1690.  
  1691.          T setnumber column column ...
  1692.  
  1693.        To choose an automatic tab function, set  column 1 to 0, column 2 to
  1694.        the    number    of lines above the current line to  look at (0..7), and
  1695.        column 3 to the maximum number of columns to move (1..254).
  1696.  
  1697.        The default tab set is an automatic tab function: "T 0 4 8".
  1698.  
  1699.        The    tabs sets are selected with the  T command and are used only by
  1700.        the ^lftabcurset and ^rttabcurset functions.
  1701.  
  1702.      HELP TEXT
  1703.  
  1704.        The help text follows all patches, macro, tab sets, and messages. It
  1705.        starts with a special line containing @  in column one.  This is the
  1706.        bottom line of each help  screen (if there is room for it).    In  the
  1707.        default profile it is blank. Then for each of up to 25 help screens,
  1708.        is the title line beginning with "A".."Y".  Following the title line
  1709.        is  the body of the screen, in columns 2 through 81.  The help pages
  1710.        must be in  order and use consecutive page letters starting    with A.
  1711.        Set B @lastpghelp to the last page of the help text. For example:
  1712.  
  1713.          B @lastpghelp C
  1714.  
  1715.          @F1,Esc-Quit help    A..C-Page A..C    PgDn-Next Page ..
  1716.          AHelp Menu
  1717.           A  Help Menu
  1718.           B  Basic Commands
  1719.           C  Basic Functions
  1720.          BBasic Commands
  1721.           To execute a command, enter the command on the command line, ..
  1722.           .
  1723.           .
  1724.          CBasic Functions
  1725.           Alt-A         Enters an ASCII code
  1726.           .
  1727.           .
  1728.  
  1729.        Note that Z is not a valid help page letter.
  1730.                                          
  1731.  
  1732.                                        p-33
  1733.      MENUS
  1734.  
  1735.        Menus  are the  same  as help  screens except they are limited to  9
  1736.        lines  (plus  the title) and the help  screen letter  is extended to
  1737.        cover  39  screens/menus.  The menu    letter    must not  overlap  help
  1738.        screens  and must follow the last help screen (help A..R, menus U..5
  1739.        in REPROF.PR1).  The menu letter may be A..Y, 1..9, α, ß, Γ, π, or Σ
  1740.        and these are referred to as 1..39 in the menu function.
  1741.  
  1742.        The    menu  item fields are columns 2..21, 22..41, 42..61, and 62..81
  1743.        on each line.  These  fields are numbered  11,21,31,41, 12,22,32,42,
  1744.        etc.  If the first character in  a field is nonblank then that field
  1745.        has an item.  If any character in  the field  up to the first  blank
  1746.        (ASCII 32 but  not ASCII 0 or  255) is a capital letter, then it may
  1747.        be selected by the user with that letter.
  1748.  
  1749.        You must write a macro to control a menu. The menu is displayed with
  1750.        ^menu(1..39) and the menu routine has control  until a user response
  1751.        is  made.  When control is given back to the macro the user response
  1752.        is in variable 0.  It may be any RE function except ASCII 0..255 and
  1753.        ^noop.  If the  response  is one of the menu items  then variable  0
  1754.        contains a ^jumpforlb(item) function.  If the response is one of the
  1755.        last four special keys (see @SPECIALKEY - SPECIAL  KEYS) then escape
  1756.        gives  ^jumpforlb(6), page up gives    ^jumpforlb(7), page  down gives
  1757.        ^jumpforlb(8), and help gives ^jumpforlb(9). Any other key gives the
  1758.        function assigned to that key. The response in var(0) may be queried
  1759.        to filter some responses and/or executed.
  1760.  
  1761.        The menu routine always displays the menu, even if ^inhibitscrn mode
  1762.        is on and leaves the display in ^inhibitscrn mode.  ^updatescrn will
  1763.        reset this as will ending the macro.
  1764.  
  1765.        The    menu  function    is  a  control    function  and does  not  update
  1766.        messages, the "are you sure?" continued feature, etc.
  1767.  
  1768.        Here is a sample menu and a macro to control it:
  1769.  
  1770.          NGeneral Functions
  1771.           mark block resize   set position mark   single draw
  1772.           mark line resize      unset position mk   double draw
  1773.           mark column resize
  1774.  
  1775.          X 114 ^label(1) ^menu(14)
  1776.          Y ^if= ^var(0) ^macro(*) ^endmacro  // * toggles menu on/off
  1777.          Y ^execfcn ^endmacro         // * executes response which
  1778.                          // * may be a ^jumpforlb
  1779.          Y ^label(6) ^endmacro         // * esc
  1780.          Y ^label(7) ^macro(113) ^endmacro     // * pgup
  1781.          Y ^label(8) ^macro(115) ^endmacro     // * pgdn
  1782.          Y ^label(9) ^help(8) ^endmacro     // * help page 8
  1783.          Y ^label(11) &mkcorres ^endmacro
  1784.          Y ^label(12) &mklnres ^endmacro
  1785.          Y ^label(13) &mkcolres ^endmacro
  1786.          Y ^label(21) &setpsmk ^endmacro
  1787.          Y ^label(22) &unsetpsmk ^endmacro
  1788.          Y ^label(31) &setdrawingmdsl ^endmacro
  1789.          Y ^label(32) &setdrawingmddl
  1790.                                          
  1791.  
  1792.                                        p-34
  1793.      PANELS
  1794.  
  1795.        Panels  are the  same as menus (and    may be mixed with them)  except
  1796.        that they  are displayed  with  ^panel(0..39)  and  once  displayed,
  1797.        control  is    immediately  returned  to the  caller.    The display  is
  1798.        inhibited.  You can get user input with ^getkey or ^getkeyns. Panels
  1799.        may    be  any number of lines, but are dynamically  cut to fit within
  1800.        the screen height - 5 lines.
  1801.  
  1802.        Here  is  a sample  panel  and  control  macro  that  displays  some
  1803.        information    and at the next  keystroke  redisplays    the  screen and
  1804.        executes the keystroke. This assumes special key definitions @csrlf,
  1805.        @csrrt, @csrup, @csrdn, @ent, @esc, @pgup, @pgdn, and @a-f1.
  1806.  
  1807.          OInformation Panel
  1808.           any information ...
  1809.           any information ...
  1810.           any information ...
  1811.  
  1812.          X 115 ^panel(15) ^getkey ^updatescrn ^execfcn ^endmacro
  1813.          Y ^label(1) ^keyfcn @csrlf ^endmacro
  1814.          Y ^label(2) ^keyfcn @csrrt ^endmacro
  1815.          Y ^label(3) ^keyfcn @csrup ^endmacro
  1816.          Y ^label(4) ^keyfcn @csrdn ^endmacro
  1817.          Y ^label(5) ^keyfcn @ent    ^endmacro
  1818.          Y ^label(6) ^keyfcn @esc    ^endmacro
  1819.          Y ^label(7) ^keyfcn @pgup    ^endmacro
  1820.          Y ^label(8) ^keyfcn @pgdn    ^endmacro
  1821.          Y ^label(9) ^keyfcn @a-f1
  1822.  
  1823.        If you don't want to intercept any special keys then you can use:
  1824.  
  1825.          X 115 ^panel(15) ^getkeyns ^updatescrn ^execfcn
  1826.  
  1827.        One panel may be made permanent by setting B @permpanel to the panel
  1828.        number.  Permanent  panels  are  displayed  during  editing    but are
  1829.        overwritten    by  DOS  shells,  help text,  and  generally  by  menus
  1830.        (depending  on  the    cursor    position),   but   they  are   restored
  1831.        automatically after this.
  1832.  
  1833.        This panel may be changed  with a macro but you must insure that the
  1834.        cursor is not covered by the new panel and that  window B  still has
  1835.        at least three text lines. To set a permanent panel which may have a
  1836.        different height than the current permanent panel use this code.  It
  1837.        unsplits the screen,  displays  the    new  panel,  and  resplits  the
  1838.        screen. This avoids all potential problems.
  1839.  
  1840.          y ^inhibitscrn ^savecsrps ^csrcmdln
  1841.          y ^varset(0) ^scrnsplit ^if<>0 ^var(0) ^unsplitscrn
  1842.          y ^patchbyte @permpanel (panel#) ^updatescrninh
  1843.          y ^if=0 ^var(0) ^jumpfor(4) ^varadd(0) ^splitscrn(2) ^execfcn
  1844.          y ^rescsrps ^updatescrn
  1845.                                          
  1846.  
  1847.                                        p-35
  1848.        The    automatic permanent panel feature sets    the  permanent panel to
  1849.        one of four panels based on the  state  of the keyboard.  The  first
  1850.        panel is for the unshifted state, the second for when the alt key is
  1851.        pressed, the  third    for  when the control key  is pressed, and  the
  1852.        fourth for when the shift key is pressed.
  1853.  
  1854.        To use this feature, set B @autopanel and B @permpanel to the number
  1855.        of the first automatic panel. The next three panels (sequential) are
  1856.        for alt, ctrl, and shift.  Each of the panels should  have  the same
  1857.        height - the keyboard  routine rewrites the panels  blindly and does
  1858.        not worry about the details needed for  different sized panels.  The
  1859.        byte  at @apdelay specifies a delay    before the  display of the alt,
  1860.        ctrl, and shift panels  in 1/18 second (one PC timer tick).    Setting
  1861.        this to approximately 9 helps prevent excessive screen changes.
  1862.  
  1863.        RE  updates    the @permpanel byte with the current automatic panel as
  1864.        it polls the keyboard.
  1865.  
  1866.        These panels will not overwrite  help,  menus,  or transient panels,
  1867.        but    will  overwrite any current  permanent    panel.    If  you let  it
  1868.        overwrite a permanent panel, do not    let it take up    more space than
  1869.        the current panel, because the keyboard routine  will not be able to
  1870.        handle the situation if the cursor or window B is covered by the new
  1871.        panel.
  1872.                                          
  1873.  
  1874.                                        p-36
  1875.      COMPATIBILITY AND TECHNICAL INFORMATION
  1876.  
  1877.        REPROF  will run on any  IBM  compatible  MS-DOS computer  with  256
  1878.        Kbytes of memory, under any standard environment.
  1879.  
  1880.        REPROF is a pure Turbo Pascal program. All input and output uses the
  1881.        Turbo  Pascal library.  Screen writes use  Turbo  Pascal's  standard
  1882.        write functions.  REPROF takes  no interrupts beyond  those taken by
  1883.        the Turbo Pascal startup code.
  1884.  
  1885.        REPROF  was compiled  with  Borland's Turbo    Pascal    5.5  and  Turbo
  1886.        Assembler 1.01.
  1887.